﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OOAD_Project_Engine.Foundation.MyEventArgs;

namespace OOAD_Project_Engine.Foundation.Interfaces
{
    interface IEntityCollection : ICollection<IEntity>
    {
        IEntity Find(string name);
        IEntity FindWith<T>() where T : IEntityComponent;
        List<IEntity> FindAllWith<T>() where T : IEntityComponent;

        T Find<T>(string name) where T : IEntityComponent;

        bool Remove(string name);

        event EventHandler<EntityEventArgs> EntityAdded;
        event EventHandler<EntityEventArgs> EntityRemoved;

    }
}
